//一条包含字母 第168场.A-Z 的消息通过以下的方式进行了编码：
//
// '第168场.A' -> 1
//'第168场.B' -> 2
//...
//'Z' -> 26
// 
//
// 除了上述的条件以外，现在加密字符串可以包含字符 '*'了，字符'*'可以被当做1到9当中的任意一个数字。 
//
// 给定一条包含数字和字符'*'的加密信息，请确定解码方法的总数。 
//
// 同时，由于结果值可能会相当的大，所以你应当对109 + 7取模。（翻译者标注：此处取模主要是为了防止溢出） 
//
// 示例 1 : 
//
// 输入: "*"
//输出: 9
//解释: 加密的信息可以被解密为: "第168场.A", "第168场.B", "第168场.C", "第168场.D", "第168场.E", "第168场.F", "G", "H", "I".
// 
//
// 示例 2 : 
//
// 输入: "1*"
//输出: 9 + 9 = 18（翻译者标注：这里1*可以分解为1,* 或者当做1*来处理，所以结果是9+9=18）
// 
//
// 说明 : 
//
// 
// 输入的字符串长度范围是 [1, 105]。 
// 输入的字符串只会包含字符 '*' 和 数字'0' - '9'。 
// 
// Related Topics 动态规划


package leetcode.editor.cn;

import java.lang.reflect.Modifier;

public class A639DecodeWaysIi {
    public static void main(String[] args) {
        Solution solution = new A639DecodeWaysIi().new Solution();
        System.out.println("佛祖保佑");
        System.out.println("\uD80C\uDC09\uD80C\uDC02\uD80C\uDC03\uD80C\uDC10");

    }

    //leetcode submit region begin(Prohibit modification and deletion)
    class Solution {
        int MOD = (int) (10e9 + 7);

        public int numDecodings(String s) {
//            if (s == null || s.length() == 0) {
//                return 0;
//            }
//            char[] ch = s.toCharArray();
//
//            //0和1交界有问题。
//            // 1位
//            int a;
//            // 2位
//            int b = 0;
//            if (ch[0] == '*') {
//                a = 9;
//            } else {
//                a = 1;
//            }
////            好像只能头两项弄出来啊
//
//            for (int i = 1; i < ch.length; i++) {
//                int aa;
//                int bb;
//                if (ch[i] == '*') {
//                    aa = (b * 9) % MOD;
//                    if (ch[i - 1] == '*') {
//                        bb = (a * 26) % MOD;
//                    } else if (ch[i - 1] == '1') {
//                        bb = (a * 9) % MOD;
//                    } else if (ch[i - 1] == '2') {
//                        bb = (a * 6) % MOD;
//                    } else {
//                        bb = 1;
//                    }
//                }
//
//                a = aa;
//                b = bb;
//            }
//            return a + b;

            return 0;
        }
    }
//leetcode submit region end(Prohibit modification and deletion)

}
